package com.envper.common.util;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class RecommendUtils {

    /**
     * 在没有用户基础数据的时候，利用洗牌算法，进行随机推荐
     * @param list 文章列表
     * @return 随机推荐后的文章列表
     */
    public static List<Long> randomSelect(List<Long> list, int n) {
        Random random = new Random();
        List<Long> tempList = new ArrayList<>(list);
        // Fisher-Yates 洗牌算法应用在前 n 个元素
        for (int i = 0; i < n; i++) {
            int randomIndex = i + random.nextInt(tempList.size() - i);
            Collections.swap(tempList, i, randomIndex);
        }
        // 返回前 n 个元素
        return tempList.subList(0, n);
    }
}
